package com.zhouyong.leetcode.比特位计数;

/**
 * 给你一个整数 n ，对于 0 <= i <= n 中的每个 i ，
 * 计算其二进制表示中 1 的个数 ，返回一个长度为 n + 1 的数组 ans 作为答案。
 */
public class Test {
    public static void main(String[] args) {
        int[] ints = countBits(3);
        for (int anInt : ints) {
            System.out.println(anInt);
        }
    }

    //    public static int[] countBits(int n) {
//        int[] ints = new int[n+1];
//        for (int i = 0; i <= n; i++) {
//            String binaryString = Integer.toBinaryString(i);
//            char[] chars = binaryString.toCharArray();
//            int count = 0;
//            for (char aChar : chars) {
//                if((aChar & 1) == 1) {
//                    count++;
//                }
//            }
//            ints[i] = count;
//        }
//        return ints;
//    }
    public static int[] countBits(int n) {
        int[] ints = new int[n + 1];
        for (int i = 0; i <= n; i++) {
            String binaryString = Integer.toBinaryString(i);
            int count = 0;
            int index = i;
            while (index > 0) {
                index &= (index - 1);
                count++;
            }
            ints[i] = count;
        }
        return ints;
    }
}